1 OPEN4,4 10 SYS36864 20 .OPT P4 24 ; 25 ; ------ STARTADRESSE ----- 27 ; 30 *= 2142 31 ; 32 ; **** SPEECH-FINDER V1.0 **** 33 ; 34 ; VON NIKOLAUS HEUSLER 35 ; ZWENGAUERWEG 18 36 ; 8000 MUENCHEN 71 37 ; 38 ; (C) 64'ER, MARKT & TECHNIK 1991 39 ; 40 ; ------- VARIABLEN ------- 42 ; 45 MEM =2;ZEIGER IN SPEICHER 50 BTS =4;ANZAHL DER BITS 55 OJOY =254;ALTER JOYSTICK-WERT 60 RIC =5;LAUFRICHTUNG 70 V =1277;BILDSCHIRM-POSITION 80 TMP =166;ZWISCHENSPEICHER 90 TEM =6;TEMPO 95 VOL =54296;SID-LAUTSTAERKE 98 ; 100 ; ------- PROGRAMM -------- 102 ; 104 ; --- INITIALISIEREN 1000 JSR 65409;VIDEOCHIP INITIALISIEREN 1002 LDA #HI:JSR $AB1E;STROUT BILDSCHIRMTEXT AUSGEBEN 1004 LDA #0:STA RIC;VORWAERTS:STA MEM:STA MEM+1;SPEICHERZEIGER:LDX #24 1006 CSID STA 54272,X;SID LOESCHEN:DEX:BPL CSID 1007 LDA #9:STA TEM;STARTTEMPO = 9:LDA #2:STA BTS;AUFLOESUNG ANFANGS 2 BIT 1008 JSR PAR;PARAMETER AM SCHIRM AUSGEBEN 1010 ; --- HAUPTSCHLEIFE 1100 PUMP SEI;INTERRUPT AUS:LDA #48:STA 1;RAM EINBLENDEN:LDA MEM+1:STA V+240 1102 LDY #0:LDA (MEM),Y;EIN BYTE AUS SPEICHER HOLEN:STA TMP;UND MERKEN 1104 LDA #55:STA 1:CLI;UND ROM WIEDERHERSTELLEN 1106 LDX BTS;ANZAHL DER BITS:BNE NO1;NICHT EIN BIT 1108 ; --- 1 BIT 1110 LDY #7;ACHT WERTE 1112 B1L LDA TMP:ASL:ADC #0:STA TMP;REGISTER LINKSVERSCHIEBEN 1114 AND #1;UNTERSTES BIT IST DATENBIT:BEQ N1L:LDA #15;LAUTSTAERKE 15 1116 N1L JSR TB;LAUTSTAERKE AN SID MELDEN UND PAUSE 1118 DEY;NAECHSTES BIT:BPL B1L:BMI RDY;FERTIG 1130 NO1 DEX;ZWEI BIT:BNE NO2;NEIN, DANN VIER BIT 1132 ; --- 2 BIT 1134 LDY #3;VIER WERTE 1136 B2L LDA TMP:ASL:ADC #0:ASL:ADC #0:STA TMP;REGISTER ZWEIMAL LINKSVERSCHIEBEN 1138 AND #3;DATENBITS SIND BITS 0 UND 1:TAX:LDA TAB2,X;WERT AUS TABELLE LESEN 1140 JSR TB;UND AN SID MELDEN UND WARTEN 1142 DEY;WEITERE BITS:BPL B2L:BMI RDY;NEIN DANN FERTIG 1150 NO2 =* 1152 ; --- 4 BIT 1154 LDY #1;ZWEI WERTE 1156 B4L LDA TMP:ASL:ADC #0:ASL:ADC #0:ASL:ADC #0:ASL 1157 ADC #0;REGISTER VIERMAL LINKSVERSCHIEBEN 1158 AND #15;DATENBITS IM UNTEREN NIBBLE:JSR TB;AN SID MELDEN, PAUSE 1160 DEY;NOCH EINEN WERT:BPL B4L 1162 ; --- EIN BYTE ABGERABEITET 1170 RDY LDA RIC;LAUFRICHTUNG:BNE REW;NICHT NULL, DANN RUECKWAERTS 1171 ; --- VORWAERTS 1172 INC MEM;ZEIGER AUF NAECHSTE ZELLE RICHTEN:BNE NEXT:INC MEM+1;HIGH:JMP NEXT 1173 ; --- RUECKWAERTS 1174 REW LDA MEM:BNE R1:DEC MEM+1;ZEIGER AUF VORHERIGE SPEICHERZELLE RICHTEN 1176 R1 DEC MEM;= UM EINS ERNIEDRIGEN 1177 ; --- NAECHSTES BYTE BEARBEITEN, JOYSTICK ABFRAGEN 1178 NEXT LDA 56320;JOYSTICK LESEN:AND #31:CMP OJOY:BEQ K5:STA OJOY;ENTPRELLEN 1180 LDA 56320:AND #1;OBEN:BNE K1 1181 ; --- ANZAHL BITS VERAENDERN 1182 LDX BTS:INX:CPX #3:BCC J1:LDX #0 1184 J1 STX BTS:JSR PAR;PARAMETER AUSGEBEN 1186 K1 LDA 56320:AND #2;UNTEN:BNE K2 1187 ; --- LAUFRICHTUNG UMDREHEN 1188 LDA RIC:EOR #1;INVERTIEREN:STA RIC:JSR PAR;PARAMETER ANZEIGEN 1190 K2 LDA 56320:AND #4;LINKS:BNE K3 1191 ; --- TEMPO VERAENDERN 1192 LDX TEM:DEX:BPL J3:LDX #9;MAXIMALWERT 1194 J3 STX TEM;NEUES TEMPO:JSR PAR;PARAMETER AUSGEBEN 1200 K3 LDA 56320:AND #8;RECHTS:BNE K4:LDA #0:STA VOL;STUMM:JMP 65409;FERTIG 1202 K4 LDA 56320:AND #16;FEUER:BEQ X5;JA, DANN HEXANZEIGE 1204 K5 JMP PUMP;SONST WEITER IN HAUPTSCHLEIFE 1205 ; --- ADRESSE HEXADEZIMAL EINBLENDEN 1206 X5 LDA #12:STA 214;CURSORZEILE:LDA #16:STA 211;CURSORSPALTE 1207 JSR 58732;CURSOR AN NEUE STELLE:LDA #"$":JSR 65490;DOLLARZEICHEN DRUCKEN 1208 LDA MEM+1;ADRESSE HIGH:JSR HEX;AUSGEBEN:LDA MEM;UND LOWBYTE:JSR HEX;AUCH 1210 LDX #0:LDY #0;VERZOEGERUNG, CA. 1 SEKUNDE 1212 PSE DEX:BNE PSE;UM STICK ZU ENTPRELLEN:DEY:BNE PSE 1214 F1 LDA 56320:AND #16;WENN FEUERKNOPF IMMER NOCH GEDRUECKT:BEQ F1;WARTEN 1216 F2 LDA 56320:AND #16;FEUER:BNE F1;WARTEN, BIS FEUER GEDRUECKT 1220 LDA #16:STA 211;CURSOR AUF SPALTE 16:LDX #4;FUENF LEERZEICHEN 1222 SPL JSR $AB3F;SPACE DRUCKEN:DEX;UND ANZEIGE:BPL SPL;LOESCHEN:JMP PUMP 1690 ; 1699 ; --- ZAHL HEXADEZIMAL AUSDRUCKEN 1700 HEX PHA:LSR:LSR:LSR:LSR;ERST HIGH-NIBBLE DRUCKEN:JSR HEX1:PLA;LOW-NIBBLE 1702 HEX1 AND #15;SIGNIFIKANTE BITS ISOLIEREN:TAX;ALS TABELLEN-INDEX 1704 LDA HEXT,X;HEXWERT AUS TABELLE:JMP 65490;AUSDRUCKEN 1790 ; 1792 ; --- SID-LAUTSTAERKE SETZEN UND PAUSE 1800 TB STA VOL;WERT AN SID MELDEN 1802 LDX TEM;TEMPO:BEQ FERT;NULL, DANN KEINE PAUSE 1804 WAIT NOP:NOP;VERZOEGERUNG:NOP:NOP:NOP:NOP:DEX:BPL WAIT 1806 FERT RTS 1890 ; 1892 ; --- PARAMETER AM BILDSCHIRM AUSGEBEN 1900 PAR LDX BTS;ANZAHL BITS:LDA BITT,X:STA V;IN VIDEO-RAM 1902 LDX RIC:LDA RICT,X:STA V+80;RICHTUNG 1904 LDA #"9":SEC:SBC TEM:STA V+160;NEUN MINUS TEMPO:RTS 1997 ; 1998 ; ------ DIVERSE TEXTE ---- 1999 ; 2000 HI .ASC "SPEECH-FINDER V1":.BYT 13 2001 .ASC "[163][163][163][163][163][163][163][163][163][163][163][163][163][163][163][163] 2002 .BYT 13,13:.[198] "VON NIKOLAUS HEUSLER, 01.91 2004 .BYT 13:.ASC " ANZ. BITS: [160] 2006 .BYT 13:.[198] " RICHTUNG: CLOSE 2008 .BYT 13:.ASC " TEMPO: [160] 2010 .BYT 13:.[198] " SPEICHER: CLOSE 2020 .BYT 13:.ASC "BEDIENUNG: JOYSTICK PORT 2":BRK 2100 HEXT .ASC "0123456789ABCDEF 2102 BITT .[198] "124 2104 RICT .ASC " 2200 TAB2 .BYT 15,10,5,0